package com.java.annotation;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

import org.junit.Test;



public class TestDriver {
	@Test
	public void test01() {

		try {
			// 获取一个类
			Class<Student> c = Student.class;

			// 创建Student的实例对象
			Student stu0 = c.newInstance();

			stu0.setStuName("王五");

			// 获取Method方法：doStuding
			Method m = c.getDeclaredMethod("doStuding");

			// 获取该方法的所有注解
			Annotation[] an = m.getAnnotations();

			// 遍历输出所有注解对象
			for (Annotation annotation : an) {
				// 判断是否是MyAnnotation类型
				if (annotation instanceof MyAnnotation) {
					// 执行该方法对象，将注解的参数值参与运行
					m.invoke(stu0);
					// 用数组形式输出学习的课程
					System.out.println("学习的课程有：");
					String[] arrs = ((MyAnnotation) annotation).courseName();
					for (String str : arrs) {
						System.out.print(" " + str);
					}
					System.out.println();
				}
			}

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}
